<template>
  <div id="app">
    <!-- 第一种直接拿函数方法 -->
    <!-- <h1 @click="$store.commit('addFn',10)">根组件:{{count}}</h1> -->
    <!--第二种函数方法 推荐使用 ...mapMutations(['addFn'])接收-->
    <h1 @click="addFn(10)">根组件同步:{{count}}</h1>
    <!-- 第一种异步方法，不需要再mapAction注册 -->
    <!-- <h1 @click="$store.dispatch('asyncAddFn',5)">根组件异步:{{count}}</h1> -->
    <!-- 第二种异步方法，推荐使用 ...mapActions(['asyncAddFn'])接收 -->
    <h1 @click="asyncAddFn(5)">根组件异步:{{count}}</h1>
    <!-- <h1>从VueX中获取数据：{{$store.state.count}}</h1> -->
    <h3 v-for="item in list" :key="item">{{item}}</h3>
    <input type="text">
      <Son1>
      </Son1>
    从VueX中获取数据： <label>

      <div>{{ xxxList }}</div>
      </label>

      <hr>
        <Son2></Son2>

      </div>

</template>

<script>
import { mapActions, mapGetters, mapMutations, mapState } from 'vuex'
import Son1 from './components/Son1.vue'
import Son2 from './components/Son2.vue'

export default {
  name: 'app',
  data: function () {
    return {

    }
  },
  components: {
    Son1,
    Son2
  },
  computed: {
    // mapState 方法会自动从Vuex取数据放到计算属性中
    ...mapState(['count', 'list']),
    ...mapGetters(['xxxList'])

  },
  methods: {
    // mapMutations 方法会自动从Vuex取方法放到methods中
    // asyncAddFn 异步方法
    ...mapMutations(['addFn']),
    ...mapActions(['asyncAddFn'])
  }

}

</script>

<style>
  #app {
    width: 600px;
    margin: 20px auto;
    border: 3px solid #ccc;
    border-radius: 3px;
    padding: 10px;
  }
</style>
